package query

import (
	"strings"
	"time"
)

type SearchBase struct {
	// 用户id
	UserId int64 `json:"userId,omitempty"`
	// 每页条数
	PageSize int `json:"pageSize,omitempty"`
	// 当前页
	PageNum int `json:"pageNum,omitempty"`
	// 关键字
	Keyword string `json:"keyword,omitempty"`
	// 是否认证
	Auth bool `json:"auth,omitempty" default:"false"`
	// 排序
	OrderSort []string `json:"orderSort,omitempty"`
	// 额外参数
	Params map[string]interface{} `json:"params,omitempty"`
	// 开始时间
	StartTime time.Time `json:"startTime"`
	// 结束时间
	EndTime time.Time `json:"endTime"`
}

type Attr struct {
	AttrId    int    `json:"attrId,omitempty"`
	AttrName  string `json:"attrName,omitempty"`
	AttrValue string `json:"attrValue,omitempty"`
	Sort      int    `json:"sort,omitempty"`
}

type Sort struct {
	// 排序字段
	SortField string
	// 排序方式 true->asc false ->desc
	SortType bool
}

func (e *SearchBase) GetOrderSort() []Sort {
	orderSorts := e.OrderSort
	sorts := make([]Sort, 0, 3)
	for _, item := range orderSorts {
		if strings.Contains(item, "_") {
			split := strings.Split(item, "_")
			sort := Sort{
				SortField: split[0],
				SortType:  split[1] == "asc",
			}
			sorts = append(sorts, sort)
		}
	}
	return sorts
}
